package com.omenkk.juc.c2;

import java.util.ArrayList;
import java.util.Arrays;

public class demo4 {
    public static void main(String[] args) {
    }
}
class ThreadSafe{
    //加入final 防止被重写
    public final void method1(int number){
        //list 变量本身存储在栈内存中，而 new ArrayList<>() 创建的对象实例存储在堆内存中
        ArrayList<String> list=new ArrayList<>();
        for(int i=0;i<number;i++){
            method2(list);
            method3(list);
        }
    }
    public void method2(ArrayList<String> list){
        list.add("1");
    }
    public void method3(ArrayList<String> list){
list.remove(0);
    }
}
//如果方法的局部变量可能被其他线程调用，那么就会有线程安全问题
class ThreadSafeSubClass extends ThreadSafe{
    @Override
    public void method3(ArrayList<String> list){
        new Thread(()->{
            list.remove(0);
        }).start();
    }
}
